Skip to main content

Course Schedule III

Question

Given a list of courses, each represented by an integer start and end time, determine the maximum number of courses that can be taken concurrently.

Example 1
None

Solution

all//Course Schedule III.py


#Solution:
#This problem can be solved using a greedy approach.

#First, we sort the courses by their end time in increasing order.
#Then, we iterate through the courses one by one and check if the current course can be taken without exceeding the maximum number of courses.
#If it can, we add it to the list of taken courses and increment the count of taken courses.
#If it cannot, we skip it and move onto the next course.
#At the end of the iteration, we return the count of taken courses.

def courseScheduleIII(courses):
# Sort the courses by end time
courses.sort(key=lambda x: x[1])

# Initialize the count of taken courses to 0
taken = 0

# Iterate through the courses
for course in courses:
# Check if the current course can be taken
if taken + 1 <= course[1]:
# Increment the count of taken courses
taken += 1

# Return the count of taken courses
return taken